package xian.woniu.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 自定义配置类，解决跨域访问问题
 * @author SongHang
 * @time 2022/05/11 19:51:32
 */
@Configuration
public class MyConfig implements WebMvcConfigurer {
    /**
     * Cors: Cross-origin resource sharing 配置
     * 跨域不同源，无法访问资源问题，进行配置。
     * 前端服务器。浏览器。后端服务器三方之间
     * 该配置相当于加了一个过滤器
     * @param registry
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        //设置拦截路径。/**表示拦截所有
        registry.addMapping("/**")
                //允许前端携带cookie，这是spring框架作者给我们留的api，
                // 会在服务器启动时候就部署好设置。
                .allowCredentials(true)
                // 默认情况下，跨域设置只允许GET和Post请求，不允许DELETE和PUT
                .allowedMethods("*")
                // 该配置会在每次响应时，都加上一个响应头：Access-Control-Allow-Origin
                // 该响应头的取值就是：http://localhost:8080，这个响应头就发给浏览器
                // 浏览器发现8080在白名单中，就允许访问
                // 该配置是服务器发给浏览器的，让其能够识别进而读出相应的数据。
                .allowedOrigins("http://localhost:8080");
    }
}
/**
 * 前后端分离的坑目前都平了。
 * 主要是三大坑：1，跨域问题，得自己配置。
 * 2，shiro框架拦截预检问题，
 * 以及得自己配置返回json数据
 * 而不是重定向或转发了
 * 3，axios异步请求默认不带cookie，
 * 需要自己前后端都配置一下
 */